//
//  HMEmoticonToolBarView.swift
//  WeiBo
//
//  Created by apple on 16/7/2.
//  Copyright © 2016年 itheima. All rights reserved.
//

import UIKit

protocol HMEmoticonToolBarViewDelegate: NSObjectProtocol{
    
    func emoticonButtonClick(type:HMEmoticonType)
    
}

enum HMEmoticonType: Int{
    
    case Recent = 1000
    case Default = 1001
    case Emoji = 1002
    case Lxh = 1003
    
}

// 如何适配 iOS中的 UIStackView
class HMEmoticonToolBarView: UIStackView {

    // 
    weak var delegate: HMEmoticonToolBarViewDelegate?
    
    // 定义一个按钮用来记录
    var currentButton: UIButton?
    
    
    // 第一步 -- 重写构造函数
    override init(frame: CGRect) {
        super.init(frame: frame)
        
        
        // 添加子空间
        setupUI()
        
        // 我们需要设置2个属性
        
        // 设置水平还是垂直
        axis = .Horizontal
        // 子控件的填充方式
        distribution = .FillEqually
    }
    
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    // 第二步 -- 定义一个方法,来实现 视图的添加和布局
    private func setupUI(){
        
        addChildButtons("最近", image: "compose_emotion_table", type: .Recent)
        addChildButtons("默认", image: "compose_emotion_table", type: .Default)
        addChildButtons("emoji", type: .Emoji)
        addChildButtons("浪小花", type: .Lxh)
        
    }
    
    // 定义一个方法,用来添加按钮,以及设置按钮的一些属性
    ///  添加按钮的方法
    ///
    ///  - parameter title: 标题
    ///  - parameter image: 图片的名字,给了他一个默认值;如果不设置就取默认值
    ///  - parameter type:  类型
    private func addChildButtons(title: String,image: String = "compose_emotion_table",type: HMEmoticonType){
        
        
        let button = UIButton()
        
        // 设置属性
        button.setTitle(title, forState: .Normal)
        button.setTitleColor(UIColor.whiteColor(), forState: UIControlState.Normal)
        button.setTitleColor(UIColor.darkGrayColor(), forState: .Selected)
        
        // 设置背景图片
        button.setBackgroundImage(UIImage(named: "\(image)_normal"), forState: .Normal)
        button.setBackgroundImage(UIImage(named: "\(image)_selected"), forState: .Selected)
        
        // 添加点击事件
        button.addTarget(self, action: "childButtonClikc:", forControlEvents: .TouchUpInside)
        // 设置tag
        // type.rawValue 就可以拿到枚举的值
        button.tag = type.rawValue
        
        // 添加到UIStackView里
        addArrangedSubview(button)
        
        
        // 设置默认选择的一个按钮
        if type == .Default{
            button.selected = true
        }
    }
    
    //MARK:-- 按钮的点击事件
    @objc private func childButtonClikc(button: UIButton){
        
        // 没有判断 点击同一个button的时候,让他得返回
//        if button == currentButton {
//            return
//        }
//        
//        currentButton?.selected = false
//        
//        button.selected = true
//        
//        currentButton = button
        
        for subview in subviews{
            
            let subButton = subview as! UIButton
            
            subButton.selected = false
            
        }
        
        button.selected = true
        
//        button.tag
        // 调用一个代理
        delegate?.emoticonButtonClick(HMEmoticonType(rawValue: button.tag)!)
        
    }
    
    // 第三步: 懒加载控件

}
